package com.ruoyi.basedata.service;

import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.basedata.domain.Concentrator;
import com.ruoyi.basedata.domain.vo.ConcentratorCommand;
import com.ruoyi.basedata.domain.vo.ConcentratorProtocol;

import java.util.List;

/**
 * 集中器管理Service接口
 *
 * @author ruoyi
 * @date 2023-12-18
 */
public interface IConcentratorService {
    /**
     * 查询集中器管理
     *
     * @param ID 集中器管理主键
     * @return 集中器管理
     */
    public Concentrator selectConcentratorByID(Long ID);

    /**
     * 查询集中器管理列表
     *
     * @param concentrator 集中器管理
     * @return 集中器管理集合
     */
    public List<Concentrator> selectConcentratorList(Concentrator concentrator);

    public List<ConcentratorProtocol> selectConcentratorProtocolList(Concentrator concentrator);

    /**
     * 新增集中器管理
     *
     * @param concentrator 集中器管理
     * @return 结果
     */
    public int insertConcentrator(Concentrator concentrator);

    /**
     * 修改集中器管理
     *
     * @param concentrator 集中器管理
     * @return 结果
     */
    public int updateConcentrator(Concentrator concentrator);

    /**
     * 批量删除集中器管理
     *
     * @param IDs 需要删除的集中器管理主键集合
     * @return 结果
     */
    public List<String> deleteConcentratorByIDs(Long[] IDs);

    /**
     * 删除集中器管理信息
     *
     * @param ID 集中器管理主键
     * @return 结果
     */
    public int deleteConcentratorByID(Long ID);


    JSONObject sendCommand(ConcentratorCommand concentratorCommand);

    JSONObject getCommandResult(ConcentratorCommand concentratorCommand);

    /**
     * 导入集中器
     *
     * @param list 集中器list
     */
    void importData(List<Concentrator> list);

    /**
     * 集中器绑定户表
     *
     * @param concentratorId 集中器自增id
     * @param protocolId     协议id
     * @param terminalIds    户表自增id
     * @return 是否成功
     */
    boolean bindTerminalsXb(Long concentratorId, String protocolId, List<Long> terminalIds);
}
